library(reticulate)#abrindo o pacote reticulateDesafio 14
virtualenv_create("env_me315", python = "C:/Program Files/Python312/python.exe")#criando um ambiente virtual pra usar pythonvirtualenv: env_me315
use_virtualenv("env_me315", required = TRUE) #manda usar o ambiente virtual criado#!pip install plotnine#questao 1
from plotnine import *
from plotnine.data import diamonds
# Ver as primeiras linhas
print(diamonds.head()) carat cut color clarity depth table price x y z
0 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43
1 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31
2 0.23 Good E VS1 56.9 65.0 327 4.05 4.07 2.31
3 0.29 Premium I VS2 62.4 58.0 334 4.20 4.23 2.63
4 0.31 Good J SI2 63.3 58.0 335 4.34 4.35 2.75
#questao 2
# Cria o gráfico usando ggplot (plotnine)
plot = (
ggplot(diamonds) + # Define o dataset diamonds para o gráfico
aes(x='carat', y='price', color='cut') + # Define as variáveis do gráfico: x, y e cor por corte
geom_point(alpha=0.4, size=1.5) + # Adiciona pontos com transparência (alpha) e tamanho definido
scale_y_continuous(labels=lambda l: [f"${x:,.0f}" for x in l]) + # Formata o eixo y como valores monetários
labs(
title='Relação entre Peso (Carat) e Preço dos Diamantes', # Título do gráfico
x='Peso (Carat)', # Label do eixo X
y='Preço (USD)', # Label do eixo Y
color='Qualidade do Corte' # Label da legenda
) +
theme_minimal() + # Aplica um tema minimalista
theme(
plot_title=element_text(size=14, weight='bold'), # Tamanho e peso da fonte do título
axis_title=element_text(size=12), # Tamanho da fonte dos eixos
legend_position='right' # Posição da legenda
)
)
# Salva o gráfico como arquivo PNG
plot.save("plot.png", width=12, height=8, dpi=300) # Pode-se adicionar width, height e dpi para maior controle do tamanho e resolução\\smb\ra237599\Documentos\.virtualenvs\env_me315\Lib\site-packages\plotnine\ggplot.py:630: PlotnineWarning: Saving 12 x 8 in image.
\\smb\ra237599\Documentos\.virtualenvs\env_me315\Lib\site-packages\plotnine\ggplot.py:631: PlotnineWarning: Filename: plot.png
##Ações tomadas para garantir boa qualidade do gráfico
Transparência (alpha=0.4): reduz a sobreposição dos pontos, facilitando a visualização de densidades em regiões com muitos dados.
Escala e rótulos claros: eixos nomeados e o eixo y formatado em dólares tornam o gráfico mais legível e informativo.
Cores por categoria (color=‘cut’): adiciona uma dimensão qualitativa que permite observar se o tipo de corte influencia o preço para um mesmo peso.
Tema limpo (theme_minimal): remove elementos visuais desnecessários e melhora o foco na relação entre as variáveis.
Tamanho dos pontos ajustado (size=1.5): garante boa distinção visual sem ruído excessivo.
##Resposta 2 O gráfico de dispersão mostra uma forte associação positiva entre o peso (carat) e o preço (price) dos diamantes: à medida que o peso aumenta, o preço cresce de forma não linear, sugerindo que diamantes maiores são desproporcionalmente mais caros. Observa-se também que a qualidade do corte influencia o preço — para um mesmo peso, diamantes com cortes de melhor qualidade tendem a apresentar preços mais altos. A transparência e o tema limpo permitem visualizar claramente a tendência geral e a variação dentro de cada categoria, produzindo um gráfico informativo e visualmente equilibrado.
knitr::include_graphics("plot.png", dpi = 300, auto_pdf = TRUE)# Importa a biblioteca plotnine e o dataset diamonds
from plotnine import *
from plotnine.data import diamonds
# Cria o segundo gráfico
plot2 = (
ggplot(diamonds) + # Define o dataset diamonds para o gráfico
aes(x='carat', y='price', color='cut') + # Define variáveis do gráfico: x, y e cor por corte
geom_point(alpha=0.4, size=1.2, show_legend=False) + # Adiciona pontos com transparência e tamanho menor; oculta a legenda
geom_smooth(method='lm', se=False, color='black', size=1) + # Adiciona linha de regressão linear sem intervalo de confiança
facet_wrap('~cut') + # Cria subplots separados para cada tipo de corte (cut)
scale_y_continuous(labels=lambda l: [f"${x:,.0f}" for x in l]) + # Formata o eixo Y como valores monetários
labs(
title='Relação entre Peso (Carat) e Preço (Price) por Tipo de Corte', # Título do gráfico
x='Peso (Carat)', # Label do eixo X
y='Preço (USD)' # Label do eixo Y
) +
theme_minimal() + # Aplica tema minimalista
theme(
plot_title=element_text(size=14, weight='bold'), # Tamanho e peso da fonte do título
axis_title=element_text(size=12) # Tamanho da fonte dos eixos
)
)
# Salva o gráfico como arquivo PNG
plot2.save("plot2.png", width=12, height=8, dpi=300) # Pode-se adicionar width, height e dpi para controlar o tamanho e resolução\\smb\ra237599\Documentos\.virtualenvs\env_me315\Lib\site-packages\plotnine\ggplot.py:630: PlotnineWarning: Saving 12 x 8 in image.
\\smb\ra237599\Documentos\.virtualenvs\env_me315\Lib\site-packages\plotnine\ggplot.py:631: PlotnineWarning: Filename: plot2.png
##Resposta escrita da questao 3 : #Questao 3 #O gráfico mostra uma clara associação positiva entre o peso (carat) e o preço (price) dos diamantes: conforme o peso aumenta, o preço cresce de maneira acentuada, indicando uma relação não linear. Além disso, observa-se que a qualidade do corte influencia o preço — diamantes com cortes de melhor qualidade, como Ideal e Premium, tendem a ter preços mais elevados para o mesmo peso, enquanto cortes inferiores, como Fair e Good, concentram-se em faixas de preço mais baixas. Para garantir um gráfico de boa qualidade, foram aplicadas medidas como o uso de transparência nos pontos (alpha) para evitar sobreposição, rótulos claros e tema limpo, destacando a tendência principal sem distrações visuais. Assim, conclui-se que o peso é um forte determinante do preço, mas a qualidade do corte também exerce influência relevante.
knitr::include_graphics("plot2.png", dpi = 300, auto_pdf = TRUE)# Questão 4: Cria o terceiro gráfico
plot3 = (
ggplot(diamonds) + # Define o dataset diamonds para o gráfico
aes(x='carat', y='price', color='cut') + # Define variáveis do gráfico: x, y e cor por corte
geom_point(alpha=0.3, size=1) + # Adiciona pontos com transparência mais baixa e tamanho menor
facet_grid('color ~ clarity') + # Cria uma grade de facetas: linhas por cor, colunas por clareza
scale_y_continuous(labels=lambda l: [f"${x:,.0f}" for x in l]) + # Formata o eixo Y como valores monetários
labs(
title='Relação entre Preço (Price) e Peso (Carat) dos Diamantes', # Título do gráfico
subtitle='Facetas mostram combinações de cor (linhas) e clareza (colunas)', # Subtítulo explicativo
x='Peso (Carat)', # Label do eixo X
y='Preço (USD)', # Label do eixo Y
color='Qualidade do Corte' # Label da legenda de cores
) +
theme_minimal() + # Aplica tema minimalista
theme(
plot_title=element_text(size=14, weight='bold'), # Configura o tamanho e peso da fonte do título
plot_subtitle=element_text(size=11), # Configura o tamanho da fonte do subtítulo
axis_text_x=element_text(size=7), # Tamanho do texto do eixo X
axis_text_y=element_text(size=7), # Tamanho do texto do eixo Y
strip_text=element_text(size=7), # Tamanho do texto das facetas
legend_position='right' # Posição da legenda
)
)
# Salva o gráfico como arquivo PNG
plot3.save("plot3.png", width=16, height=10, dpi=300) # Pode-se adicionar width, height e dpi para controlar tamanho e resolução\\smb\ra237599\Documentos\.virtualenvs\env_me315\Lib\site-packages\plotnine\ggplot.py:630: PlotnineWarning: Saving 16 x 10 in image.
\\smb\ra237599\Documentos\.virtualenvs\env_me315\Lib\site-packages\plotnine\ggplot.py:631: PlotnineWarning: Filename: plot3.png
knitr::include_graphics("plot3.png", dpi = 300, auto_pdf = TRUE)##Resposta escrita da questao 4: A visualização mostra que a relação entre peso (carat) e preço (price) dos diamantes continua sendo positiva em todas as combinações de corte, cor e clareza: diamantes mais pesados custam mais caro. Entretanto, a intensidade da relação varia conforme as características de qualidade. Diamantes com cortes superiores (como Ideal e Premium), cores mais puras (como D e E) e clareza elevada (como IF e VVS1) apresentam preços muito mais altos, mesmo para pesos semelhantes. Já diamantes com cortes simples, cores mais amareladas (como J) ou clareza inferior exibem preços menores e maior dispersão. Portanto, embora o peso seja o principal determinante do preço, as variáveis de qualidade modificam fortemente o padrão dessa relação, revelando um efeito combinado entre peso, cor, corte e clareza.